package fint.the.intersection.of.two.arrays;

import java.util.HashSet;

/**
 * @Time 2019/12/14
 * @author 王光浩
 * @Need 获取两个数组中数值相同的数据（整数），结果不可出现重复数据
 * @Method 使用两个hashset集合，然后是使用内置方法retainAll（）方法来解决
 */
public class OtherMethod {
    public int[] intersection(int[] nums1, int[] nums2) {
    	HashSet<Integer> array1=new HashSet<Integer>();
    	HashSet<Integer> array2=new HashSet<Integer>();
    	//将第一个数组的内容放在array1中
    	for(int i:nums1) {
    		array1.add(i);
    	}
    	//将第二个数组的内容放在array2中
    	for(int i:nums2) {
    		array2.add(i);
    	}
    	//使用set中的retainAll方法——在调用者集合中移除所有不在参数集合中的元素（就是讲调用者和参数集合中值相同的元素放在调用者集合中)
    	array1.retainAll(array2);//时间复杂度为O（n）
    	//将结果转换到数组中
    	int[] result=new int[array1.size()];
    	int total=0;
    	for(int i:array1) {
    		result[total++]=i;
    	}
    	return result;
    }

}
